package clases.academico;

import CapaDatos.DataSource;
import CapaDatos.Sql;
import global.Dialogos;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class Materia extends Area {

    private int idmateria=0;
    private String codigo;
    private String materia;
    private String tipoMateria;
    //private int idmateriaperiodocurso;
    //private int idmateriadocente;
    //private int horas;
    //private String observacion;
    private  DataSource dt;
    private String sql;
    public PeriodoCurso curso;
    //public Personal docente;

    public Materia() {
        dt = new DataSource();
        curso = new PeriodoCurso();
       // docente = new Personal();
    }

    public int getIdmateria() {
        return idmateria;
    }

    public void setIdmateria(int idmateria) {
        this.idmateria = idmateria;
    }

    public String getMateria() {
        return materia;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public void setMateria(String materia) {
        this.materia = materia;
    }

    public String getTipoMateria() {
        return tipoMateria;
    }

    public void setTipoMateria(String tipoMateria) {
        this.tipoMateria = tipoMateria;
    }

    /*public int getIdmateriaperiodocurso() {
        return idmateriaperiodocurso;
    }

    public void setIdmateriaperiodocurso(int idmateriaperiodocurso) {
        this.idmateriaperiodocurso = idmateriaperiodocurso;
    }*/

    /*public int getIdmateriadocente() {
        return idmateriadocente;
    }

    public void setIdmateriadocente(int idmateriadocente) {
        this.idmateriadocente = idmateriadocente;
    }

    public int getHoras() {
        return horas;
    }

    public void setHoras(int horas) {
        this.horas = horas;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }*/

    public void sacarIdMateria(String materia) {
        sql = "SELECT IDMATERIA FROM MATERIA WHERE MATERIA='" + materia + "'";
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            this.idmateria = dt.getInt(1);
        }
    }
    
    private int getMaxMateria(){
     return Sql.getMax("IDMATERIA", "MATERIA", true);
    }
    
    
    /*public void sacarIdMateriaPeriodoCurso(String materia, String curso) {
        sql = "SELECT IDMATERIAPERIODOCURSO FROM MATERIAPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
                + "JOIN CURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIA='" + materia + "' AND CONCAT(CURSO,' ',PARALELO)='" + curso + "'";

        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            this.idmateriaperiodocurso = dt.getInt(1);
        }
    }*/

    public boolean guardarMateria() {
       if(this.ExistenciaMateria()==true){
            global.Mensajes.mostrarMensaje("Advertencia!", "La Materia ya existe...", 2);
            return false;
        } else if(this.ExistenciaCodigo()==true){
            global.Mensajes.mostrarMensaje("Advertencia!", "El código ya existe...", 2);
            return false;
        } else if (Sql.insertar("INSERT INTO MATERIA VALUES (" + this.getMaxMateria() + ", "
                + "'"+this.codigo+"', " + this.getIdarea() + ", '" + this.materia + "')")) {
            Dialogos.GuardadoconExito();
            this.limpiarMateria();
            return true;
        } else {
            global.Mensajes.mostrarMensaje("Error", "Error al ingresar los datos...!", 3);
            return false;
        }
    }

    /*public void guardarAsignacionMateria() {
        this.idmateriaperiodocurso = Sql.getMax("IDMATERIAPERIODOCURSO", "MATERIAPERIODOCURSO", true);
        sql = "INSERT INTO MATERIAPERIODOCURSO VALUES (" + this.idmateriaperiodocurso + ", "
                + this.curso.getIdcursoperiodo() + ", " + this.getIdmateria() + ")";
        Sql.insertar(sql);

    }*/

    /*public void guardarMateriaDocente() {
        this.idmateriadocente = Sql.getMax("IDMATERIADOCENTE", "MATERIADOCENTE", true);
        sql = "INSERT INTO MATERIADOCENTE VALUES (" + this.idmateriadocente + ", "
               // + this.docente.getCedulaRuc() + ", " + this.idmateriaperiodocurso + ", "
                + "'" + this.horas + "', '" + this.observacion + "')";
        Sql.insertar(sql);

    }*/

    /*public void eliminarAsignacionMateria(String curso) {
        sql = "DELETE FROM MATERIAPERIODOCURSO WHERE IDPERIODOCURSO "
                + "IN (SELECT MATERIAPERIODOCURSO.IDPERIODOCURSO FROM MATERIAPERIODOCURSO "
                + "JOIN MATERIA ON MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE CONCAT(CURSO,' ',PARALELO)='"+curso+"'  AND ESTADO=TRUE)";
       
        Sql.eliminar(sql);

    }*/

    /*public void eliminarMateriaDocente(String docente) {
        sql = "DELETE FROM MATERIADOCENTE WHERE IDMATERIAPERIODOCURSO "
                + "IN (SELECT MATERIADOCENTE.IDMATERIAPERIODOCURSO FROM MATERIADOCENTE "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO=MATERIADOCENTE.IDMATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "JOIN PERSONAL ON MATERIADOCENTE.CEDULARUC=PERSONAL.CEDULARUC "
                + "JOIN PERSONA ON PERSONA.CEDULARUC=PERSONAL.CEDULARUC "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "WHERE CONCAT(APELLIDO,' ',NOMBRE)='"+docente+"' "
                + "AND PERIODO.ESTADO=TRUE)";
        Sql.eliminar(sql);

    }*/

    public boolean actualizarMateria() {
         if (Sql.actualizar("UPDATE MATERIA SET CODIGO='"+this.codigo+"', IDAREA=" + this.getIdarea() + ", MATERIA='" + this.materia + "' "
                + "WHERE IDMATERIA='" + this.idmateria + "'")) {
            global.Mensajes.mostrarMensaje("Correcto!", "Datos actualizados correctamente...!", 1);
            this.limpiarMateria();
            return true;
        } else {
            global.Mensajes.mostrarMensaje("Error", "Error al actualizar los datos...!", 3);
            return false;
        }

    }
    
    public boolean EliminarMateria(String materia) {
        if (Sql.isExiste("SELECT * FROM MATERIA WHERE IDMATERIA IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO) "
                + "AND MATERIA='"+materia+"'")==true) {
            Dialogos.Error("La materia esta asignada a un curso... No se puede eliminar");
            return false;
        } else if (global.Mensajes.mostrarPregunta("¿Realmente desea eliminar la materia?") == true) {
            Sql.eliminar("DELETE FROM MATERIA WHERE IDMATERIA NOT IN "
                    + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO) "
                    + "AND MATERIA='"+materia+"'");
            return true;
        }

        return false;
    }

    public boolean ExistenciaMateria() {
        sql = "SELECT * FROM MATERIA WHERE MATERIA='" + this.materia + "'";
        return Sql.isExiste(sql);
    }
    
    public boolean ExistenciaMateria(String materia) {
        sql = "SELECT * FROM MATERIA WHERE MATERIA='" + materia + "' AND MATERIA!='" + this.materia + "'";
        return Sql.isExiste(sql);
    }
    
    public boolean ExistenciaCodigo() {
        sql = "SELECT * FROM MATERIA WHERE CODIGO='" + this.codigo + "'";
        return Sql.isExiste(sql);
    }
    
    public boolean ExistenciaCodigo(String codigo) {
        sql = "SELECT * FROM MATERIA WHERE CODIGO='" + codigo + "' AND CODIGO!='" + this.codigo + "'";
        return Sql.isExiste(sql);
    }

    public String SqlGeneral() {
        sql = "SELECT CODIGO, MATERIA, AREA FROM MATERIA "
                + "JOIN AREA ON MATERIA.IDAREA=AREA.IDAREA "
                + "ORDER BY (CODIGO) ASC";
        return sql;
    }

    public String SqlMateria(String materia) {
        sql = "SELECT CODIGO, MATERIA, AREA FROM MATERIA "
                + "JOIN AREA ON MATERIA.IDAREA=AREA.IDAREA "
                + " WHERE MATERIA LIKE ('" + materia + "%') ORDER BY (CODIGO) ASC";
        return sql;
    }
    
    public String SqlCodigo(String codigo) {
        sql = "SELECT CODIGO, MATERIA, AREA FROM MATERIA "
                + "JOIN AREA ON MATERIA.IDAREA=AREA.IDAREA "
                + " WHERE CODIGO LIKE ('" + codigo + "%') ORDER BY (CODIGO) ASC";
        return sql;
    }

    public String SqlArea(String area) {
        sql = "SELECT CODIGO, MATERIA, AREA FROM MATERIA "
                + "JOIN AREA ON MATERIA.IDAREA=AREA.IDAREA "
                + " WHERE AREA = '" +area+ "' ORDER BY (CODIGO) ASC";
        return sql;
    }
    
       /* public void SacarCursoAsiganado(JComboBox cbo, String curso) {

       sql = "SELECT  CONCAT(CURSO,' ',PARALELO) FROM CURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "WHERE MATERIA.IDMATERIA  IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "AND ESTADO=TRUE) AND CONCAT(CURSO,' ',PARALELO)= '"+curso+"'";
        
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            cbo.setSelectedItem(dt.getString(1));
        }
    }*/

    public void ConsultaMateria(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina) {
        modelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                return false; 
            }
        };
        tabla.setModel(modelo);
        modelo.addColumn("CODIGO");
        modelo.addColumn("MATERIA");
        modelo.addColumn("AREA");

        TableColumn columna = new TableColumn();
        columna = tabla.getColumnModel().getColumn(0);
        columna.setPreferredWidth(40);
        columna=tabla.getColumnModel().getColumn(1);
        columna.setPreferredWidth(160);
        columna=tabla.getColumnModel().getColumn(2);
        columna.setPreferredWidth(160);
        sql = objPaginacion.getPaginacion(sql, pagina, 25);
        Sql.getConsulta(sql, dt);

        String[] fila;

        while (dt.next()) {
            fila = new String[3];
            fila[0] = dt.getString(1);
            fila[1] = dt.getString(2);
            fila[2] = dt.getString(3);
            modelo.addRow(fila);

        }
        
        objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }

    public void llenardatosMateria(String materia) {
        sql = "SELECT IDMATERIA, CODIGO, MATERIA, AREA FROM MATERIA "
                + "JOIN AREA ON MATERIA.IDAREA=AREA.IDAREA "
                + "WHERE MATERIA='" + materia + "'";
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            this.idmateria = dt.getInt(1);
            this.codigo=dt.getString(2);
            this.materia = dt.getString(3);
            this.setArea(dt.getString(4));

        }
    }
    

    /*public void listaNoMateriaAsignada(JList lista, DefaultListModel modelo, String Curso) {
        
        sql = "SELECT DISTINCT MATERIA FROM MATERIA JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA\n" +
"JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO \n" +
"JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO\n" +
"JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO\n" +
"JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO\n" +
"WHERE NOT CONCAT(CURSO,' ',PARALELO)='"+Curso+"' ";
        modelo.removeAllElements();
        dt=new DataSource();
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            modelo.addElement(dt.getString(1));
            lista.setModel(modelo);
        }
        lista.setSelectedIndex(0);
    }
    
    public void listaMateriaAsignada(JList lista, DefaultListModel modelo, String Curso) {
        
        sql = "SELECT MATERIA FROM MATERIA JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA\n" +
"JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO \n" +
"JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO\n" +
"JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO\n" +
"JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO\n" +
"WHERE CONCAT(CURSO,' ',PARALELO)='"+Curso+"' ";
        //System.out.println(sql);        
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            modelo.addElement(dt.getString(1));
            lista.setModel(modelo);
        }
        lista.setSelectedIndex(0);
    }*/


    /*public void listaMateriaNoAsignadaDocente(JList lista, DefaultListModel modelo, String curso) {
        sql = "SELECT MATERIA FROM MATERIAPERIODOCURSO "
              + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
              + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
              + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
              + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
              + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
              + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO NOT IN "
              + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
              + "AND CONCAT(CURSO,' ',PARALELO)='"+curso+"' AND PERIODO.ESTADO=TRUE";
        
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            modelo.addElement(dt.getString(1));
            lista.setModel(modelo);
        }
        lista.setSelectedIndex(0);
    }

    public void listaMateriaAsignadaDocente(JTable tabla, DefaultTableModel modelo, String docente) {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), HORAS FROM MATERIAPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
                + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
                + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
                + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
                + "AND CONCAT(APELLIDO,' ', NOMBRE)='"+docente+"' "
                + "AND PERIODO.ESTADO=TRUE";
        
        Sql.getConsulta(sql, dt);
        while (dt.next()) {
            String[] fila = new String[3];
            fila[0] = dt.getString(1);
            fila[1] = dt.getString(2);
            fila[2] = dt.getString(3);
            modelo.addRow(fila);
        }
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }*/

    private void limpiarMateria() {
        this.materia = "";
        this.codigo="";
        this.idmateria=0;
        this.setIdarea(0);
    }
    
    /*public String SqlMateriaCurso() {
        sql = "SELECT  CONCAT(CURSO,' ',PARALELO), CODIGO, MATERIA FROM CURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "WHERE MATERIA.IDMATERIA  IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "AND ESTADO=TRUE)";
        return sql;
    }
    
    public String SqlCodigoMateriaCurso(String codigo) {
        sql = "SELECT  CONCAT(CURSO,' ',PARALELO), CODIGO, MATERIA FROM CURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "WHERE MATERIA.IDMATERIA  IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "AND ESTADO=TRUE) AND CODIGO LIKE ('"+codigo+"%')";
        return sql;
    }
    
    public String SqlMateriaMateriaCurso(String materia) {
        sql = "SELECT  CONCAT(CURSO,' ',PARALELO), CODIGO, MATERIA FROM CURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "WHERE MATERIA.IDMATERIA  IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "AND ESTADO=TRUE) AND MATERIA LIKE ('"+materia+"%')";
        return sql;
    }
    
    public String SqlCursoMateriaCurso(String curso) {
        sql = "SELECT  CONCAT(CURSO,' ',PARALELO), CODIGO, MATERIA FROM CURSO "
                + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
                + "JOIN PERIODOCURSO ON PERIODOCURSO.IDCURSO=CURSO.IDCURSO "
                + "JOIN MATERIAPERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
                + "WHERE MATERIA.IDMATERIA  IN "
                + "(SELECT IDMATERIA FROM MATERIAPERIODOCURSO "
                + "JOIN PERIODOCURSO ON MATERIAPERIODOCURSO.IDPERIODOCURSO=PERIODOCURSO.IDPERIODOCURSO "
                + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
                + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
                + "JOIN PARALELO ON CURSO.IDPARALELO=CURSO.IDPARALELO "
                + "WHERE MATERIAPERIODOCURSO.IDMATERIA=MATERIA.IDMATERIA "
                + "AND ESTADO=TRUE) AND CONCAT(CURSO,' ',PARALELO)= '"+curso+"'";
        return sql;
    }
    
    public void ConsultaMateriaCurso(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina) {
        modelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                return false; 
            }
        };
        tabla.setModel(modelo);
        modelo.addColumn("CURSO");
        modelo.addColumn("CODIGO MATERIA");
        modelo.addColumn("MATERIA");
       
        TableColumn columna = new TableColumn();
        columna = tabla.getColumnModel().getColumn(0);
        columna.setPreferredWidth(160);
        columna=tabla.getColumnModel().getColumn(1);
        columna.setPreferredWidth(40);
        columna=tabla.getColumnModel().getColumn(2);
        columna.setPreferredWidth(160);
        
        
        sql = objPaginacion.getPaginacion(sql, pagina, 25);
        Sql.getConsulta(sql, dt);

        String[] fila;

        while (dt.next()) {
            fila = new String[4];
            fila[0] = dt.getString(1);
            fila[1] = dt.getString(2);
            fila[2] = dt.getString(3);
         
            modelo.addRow(fila);

        }
        
        objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }*/
    

    
    /*public void ConsultacursomateriaDocente(DefaultTableModel modelo, JTable tabla, String sql, JLabel Lpaginatotal, JLabel Lpagina, int pagina) {
        modelo = new DefaultTableModel() {
            @Override
            public boolean isCellEditable(int fila, int columna) {
                return false; 
            }
        };
        tabla.setModel(modelo);
        modelo.addColumn("MATERIA");
        modelo.addColumn("CURSO");
        modelo.addColumn("DOCENTE");
        modelo.addColumn("HORAS");
       
        DefaultTableCellRenderer centrar = new DefaultTableCellRenderer();
        centrar.setHorizontalAlignment(SwingConstants.CENTER);
        tabla.getColumnModel().getColumn(3).setCellRenderer(centrar);
        TableColumn columna = new TableColumn();
        columna = tabla.getColumnModel().getColumn(0);
        columna.setPreferredWidth(350);
        columna=tabla.getColumnModel().getColumn(1);
        columna.setPreferredWidth(350);
        columna=tabla.getColumnModel().getColumn(2);
        columna.setPreferredWidth(350);
        columna=tabla.getColumnModel().getColumn(3);
        columna.setPreferredWidth(60);
        sql = objPaginacion.getPaginacion(sql, pagina, 25);
        Sql.getConsulta(sql, dt);

        String[] fila;

        while (dt.next()) {
            fila = new String[4];
            fila[0] = dt.getString(1);
            fila[1] = dt.getString(2);
            fila[2] = dt.getString(3);
            fila[3] = dt.getString(4);
            modelo.addRow(fila);

        }
        
        objPaginacion.actualPagina(Lpagina);
        objPaginacion.totalPaginas(Lpaginatotal);
        tabla.getSelectionModel().setSelectionInterval(0, 0);
    }
    
    public String SqlCursomateriaDocente() {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), "
               + "CONCAT(APELLIDO,' ', NOMBRE), HORAS FROM MATERIAPERIODOCURSO "
               + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
               + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
               + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
               + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
               + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
               + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
               + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
               + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
               + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
               + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
               + "AND PERIODO.ESTADO=TRUE";
        return sql;
    }
    
    public String SqlCursomateriaDocentecurso(String Curso) {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), "
               + "CONCAT(APELLIDO,' ', NOMBRE), HORAS FROM MATERIAPERIODOCURSO "
               + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
               + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
               + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
               + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
               + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
               + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
               + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
               + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
               + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
               + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
               + "AND PERIODO.ESTADO=TRUE "
               + "AND CONCAT(CURSO,' ',PARALELO) LIKE ('"+Curso+"%')";
        return sql;
    }
    
     public String SqlCursomateriaDocentemateria(String Materia) {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), "
               + "CONCAT(APELLIDO,' ', NOMBRE), HORAS FROM MATERIAPERIODOCURSO "
               + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
               + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
               + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
               + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
               + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
               + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
               + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
               + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
               + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
               + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
               + "AND PERIODO.ESTADO=TRUE "
               + "AND MATERIA LIKE ('"+Materia+"%')";
        return sql;
    }
     
      public String SqlCursomateriaDocentedocente(String docente) {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), "
               + "CONCAT(APELLIDO,' ', NOMBRE), HORAS FROM MATERIAPERIODOCURSO "
               + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
               + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
               + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
               + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
               + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
               + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
               + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
               + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
               + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
               + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
               + "AND PERIODO.ESTADO=TRUE "
               + "AND CONCAT(APELLIDO,' ', NOMBRE) LIKE ('"+docente+"%')";
        return sql;
    }
      
      public String SqlCursomateriaDocentehoras(int hora) {
        sql = "SELECT MATERIA, CONCAT(CURSO,' ',PARALELO), "
               + "CONCAT(APELLIDO,' ', NOMBRE), HORAS FROM MATERIAPERIODOCURSO "
               + "JOIN MATERIA ON MATERIA.IDMATERIA=MATERIAPERIODOCURSO.IDMATERIA "
               + "JOIN PERIODOCURSO ON PERIODOCURSO.IDPERIODOCURSO=MATERIAPERIODOCURSO.IDPERIODOCURSO "
               + "JOIN PERIODO ON PERIODO.IDPERIODO=PERIODOCURSO.IDPERIODO "
               + "JOIN CURSO ON CURSO.IDCURSO=PERIODOCURSO.IDCURSO "
               + "JOIN PARALELO ON PARALELO.IDPARALELO=CURSO.IDPARALELO "
               + "JOIN MATERIADOCENTE ON MATERIADOCENTE.IDMATERIAPERIODOCURSO=MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO "
               + "JOIN PERSONAL ON PERSONAL.CEDULARUC=MATERIADOCENTE.CEDULARUC "
               + "JOIN PERSONA ON PERSONAL.CEDULARUC=PERSONA.CEDULARUC "
               + "WHERE MATERIAPERIODOCURSO.IDMATERIAPERIODOCURSO IN "
               + "(SELECT IDMATERIAPERIODOCURSO FROM MATERIADOCENTE) "
               + "AND PERIODO.ESTADO=TRUE AND HORAS="+hora+"";
        return sql;
    }*/

}
